package com.shujia.day12;

import java.util.HashSet;
import java.util.Set;


public class Code10SetDemo {
    public static void main(String[] args) {
        /*
            Set集合：
                继承于Collection集合的接口
            特点：
                1.Set集合中的元素是去重的
                2.Set集合是无序的

            由于Set集合是一个接口，所以需要创建子类对象对其进行调用

         */
        Set<String> hashSet = new HashSet<>();

        hashSet.add("hello");
        hashSet.add("hello");
        hashSet.add("world");
        hashSet.add("world");
        hashSet.add("Java");
        hashSet.add("Java");

        System.out.println(hashSet);


        /*
            HashSet中的add方法实际上就是调用HashMap中的put方法
            其中底层需要调用元素的HashCode方法计算出其Hash值
            如果要判断两个传入的对象是否相等，那么首先是对其Hash值进行判断，当Hash值一样时，再通过equals比较

            由于Student中的equals方法没有重写，所以比较的是其地址值 所以每次新加添加的比较结果都是false

            所以需要重写equals方法
         */

        HashSet<Student> stuSet = new HashSet<>();
        stuSet.add(new Student("李帅真", 20));
        stuSet.add(new Student("李真帅", 21));
        stuSet.add(new Student("李帅真", 20));
        stuSet.add(new Student("你真帅", 20));

        System.out.println(stuSet);



    }
}
